package cn.iocoder.yudao.module.ym.dal.mysql.area;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.ym.dal.dataobject.area.AreaDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.ym.controller.admin.area.vo.*;

/**
 * 区域 Mapper
 *
 * @author 韩艳阳
 */
@Mapper
public interface AreaMapper extends BaseMapperX<AreaDO> {

    default PageResult<AreaDO> selectPage(AreaPageReqVO reqVO) {
        return selectPage(reqVO, new LambdaQueryWrapperX<AreaDO>()
                .eqIfPresent(AreaDO::getId, reqVO.getId())
                .inIfPresent(AreaDO::getId, reqVO.getIds())
                .eqIfPresent(AreaDO::getRemark, reqVO.getRemark())
                .eqIfPresent(AreaDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(AreaDO::getCreateTime, reqVO.getCreateTime())
                .likeIfPresent(AreaDO::getAreaName, reqVO.getAreaName())
                .eqIfPresent(AreaDO::getAreaDescription, reqVO.getAreaDescription())
                .eqIfPresent(AreaDO::getColor, reqVO.getColor())
                .eqIfPresent(AreaDO::getCoordinates, reqVO.getCoordinates())
                .eqIfPresent(AreaDO::getLatitudeLongitude, reqVO.getLatitudeLongitude())
                .last("ORDER BY CONVERT(area_name USING gbk)"));
    }

    default List<AreaDO> selectList(AreaPageReqVO reqVO) {
        return selectList(new LambdaQueryWrapperX<AreaDO>()
                .eqIfPresent(AreaDO::getId, reqVO.getId())
                .inIfPresent(AreaDO::getId, reqVO.getIds())
                .eqIfPresent(AreaDO::getRemark, reqVO.getRemark())
                .eqIfPresent(AreaDO::getStatus, reqVO.getStatus())
                .betweenIfPresent(AreaDO::getCreateTime, reqVO.getCreateTime())
                .likeIfPresent(AreaDO::getAreaName, reqVO.getAreaName())
                .eqIfPresent(AreaDO::getAreaDescription, reqVO.getAreaDescription())
                .eqIfPresent(AreaDO::getColor, reqVO.getColor())
                .eqIfPresent(AreaDO::getCoordinates, reqVO.getCoordinates())
                .eqIfPresent(AreaDO::getLatitudeLongitude, reqVO.getLatitudeLongitude())
                .last("ORDER BY CONVERT(area_name USING gbk)"));
    }

}
